package nyist.media.page;

import lombok.Getter;
import lombok.Setter;

/**
 * @author :dcf
 * @date :2019/1/26
 */

public enum ApiResult {

    /**
     * 响应成功
     */
    SUCCESS(20000, "响应成功"),

    /**
     * 响应失败
     */
    FAIL(40000, "系统异常"),

    /**
     * 请去登录
     */
    TO_LOGIN(40001, "请去登录"),

    /**
     * 请求参数有误
     */
    PARAM_ERROR(40002, "请求参数有误"),

    /**
     * 数据不存在
     */
    DATA_NOT_FOUND(40003, "数据不存在"),

    /**
     * 登录失败
     */
    LOGIN_FAIL(40004, "请输入用户名、密码"),

    /**
     * 账号被禁用
     */
    ACCOUNT_DISABLED(40005, "账号被禁用"),

    /**
     * 请至少保留一个管理员
     */
    ILLEGAL_PARAMS(40006, "请至少保留一个管理员"),

    /**
     * 校验失败
     */
    VALIDATE_FAIL(40007, "校验失败"),

    /**
     * 数据被关联，无法删除
     */
    DATA_ASSOCIATIONED(40008, "数据被关联，无法删除"),

    /**
     *
     */
    REJECTED_APPLY(40010, "不能重复审核"),

    /**/
    REJECTED_HANDLER(40011, "已完成或者已驳回的维修单不能处理"),

    /** */
    RECYCLE_FAIL(40012, "等待归还后进行回收"),

    /** */
    APPLY_FAIL(40013, "教室已经被申请"),

    /** */
    DELETE_FAIL(40014, "正在处理中的单子不能删除"),

    /** */
    UPLOAD_IMG_FAIL(40015, "上传失败"),

    /** */
    NO_PERMISSIONS(40016, "对不起，您没有权限"),

    /** */
    ORDERS_HANDLED(40017, "维修单已经处理"),
    ;


    /**
     * 状态码
     */
    @Setter
    @Getter
    private Integer code;

    /**
     * 状态信息
     */
    @Setter
    @Getter
    private String msg;

    ApiResult(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public ApiResultMap<String, Object> getMap() {
        return ThreadLocalMap.get().add(ThreadLocalMap.CODE, this.getCode()).add(ThreadLocalMap.MSG, this.getMsg());
    }

    public ApiResultMap<String, Object> getMap(String errorMsg) {
        return ThreadLocalMap.get().add(ThreadLocalMap.CODE, this.getCode()).add(ThreadLocalMap.MSG, this.getMsg()).add(ThreadLocalMap.ERR_MSG, errorMsg);
    }
}

